//
// Created by 刘洋 on 2024/2/2.
//

#ifndef FOC1_AS5600_H
#define FOC1_AS5600_H
#include "i2c.h"
#include "math.h"
#include "time_utils.h"
#define AS5600_I2C_HANDLE hi2c1

#define I2C_TIME_OUT_BASE   10
#define I2C_TIME_OUT_BYTE   1

/*
注意:AS5600的地址0x36是指的是原始7位设备地址,而ST I2C库中的设备地址是指原始设备地址左移一位得到的设备地址
*/

#define AS5600_RAW_ADDR    0x36
#define AS5600_ADDR        (AS5600_RAW_ADDR << 1)
#define AS5600_WRITE_ADDR  (AS5600_RAW_ADDR << 1)
#define AS5600_READ_ADDR   ((AS5600_RAW_ADDR << 1) | 1)


#define AS5600_RESOLUTION 4096 //12bit Resolution

#define AS5600_RAW_ANGLE_REGISTER  0x0C

void bsp_as5600Init();
/**
 * 獲取AS5600原始數據
 * @return
 */
uint16_t bsp_as5600GetRawAngle();
/**
 * 獲取旋轉角度【0，2*M_PI】
 * @return
 */
float getAngle_Without_track();
/**
 * dengFOC中給的獲取弧度算法，【-9999+，+9999+】
 * @return
 */
float getAngle();
/**
 * 获取速度 单位：rad/s
 * @return
 */
float getVelocity();
#endif //FOC1_AS5600_H
